#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<string.h>
#include<signal.h>
#include<sys/wait.h>

/* raise 函数用于向自己发送信号。
   父进程等待子进程退出并判断子进程是否由于信号退出，如果是，则打印信号值。
   子进程创建后使用raise函数向自己发出了SIGQUIT退出信号。
*/

int main(int argc, const char* argv[])
{
    pid_t pid = fork();
    if(pid > 0)
    {
        // 父进程
        int s;
        wait(&s);
        if(WIFSIGNALED(s))
        {
            printf("term by signal:%d\n", WTERMSIG(s));
        }
    }
    else if(pid == 0)
    {
        // 子进程
        raise(SIGQUIT);
    }
    return 0;
}